[XEN] Fix SIB byte decode when extended by REX.X and REX.B.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 30 Nov 2006 14:04:36 +0000 (14:04 +0000)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 30 Nov 2006 14:04:36 +0000 (14:04 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/x86_emulate.c

index 22f63222f7c2fe63323ebf95645f3d3e2efdb2c1..18921846ee0427decf0c04d2f136e46b64b78a9f 100644 (file)
@@ -611,8 +611,8 @@ x86_emulate_memop(
             if ( modrm_rm == 4 )
             {
                 sib = insn_fetch(uint8_t);
-                sib_index = ((sib >> 3) & 7) | ((modrm << 2) & 8);
-                sib_base  = (sib & 7) | ((modrm << 3) & 8);
+                sib_index = ((sib >> 3) & 7) | ((rex_prefix << 2) & 8);
+                sib_base  = (sib & 7) | ((rex_prefix << 3) & 8);
                 if ( sib_index != 4 )
                     ea_off = *(long *)decode_register(sib_index, &_regs, 0);
                 ea_off <<= (sib >> 6) & 3;